import Vue from 'vue'
import axios from 'axios'
import App from './App.vue'
import router from './router'
import store from './store'
import basic from '@/assets/utils/basic.js'
import comm from '@/assets/utils/comm.js'
import qs from 'qs'
import '@/assets/scss/comm.scss'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import _g from './assets/utils/global.js'
import _pop from './assets/utils/pop'
import _toComm from './assets/utils/toComm'
import _oss from './assets/utils/oss'


window._g = _g
window._d = comm
Vue.prototype._g = _g
window._bus = new Vue()

Vue.use(ElementUI)
// 自定义配置axios，以后用axios，就用lAxios
Vue.prototype.$qs = qs
Vue.prototype.$b = basic
Vue.prototype.$pop = _pop
Vue.prototype.$toComm = _toComm
Vue.prototype.$oss = _oss

window.PATH =
  window.location.href.indexOf('192.168.10.') > -1 ?
    '/projectName' :
    '/apis/projectName'


// 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
  // 当被绑定的元素插入到 DOM 中时……
  inserted: function(el) {
    // 聚焦元素
    el.focus()
  }
})

const lAxios = axios.create({
  baseURL: process.env.NODE_ENV == 'development' ?
    '/projectName' : '/apis/projectName', //基础路径
  timeout: 10000, //延迟时间，可不要
  // headers: { 'X-Custom-Header': 'foobar' }, //请求头
  withCredentials: true
})


//以下的请求拦截器和响应拦截器，可不要，先写着
// 请求拦截器
lAxios.interceptors.request.use(function(config) {
  // 在发送请求之前做些什么
  return config
}, function(error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})
// 响应拦截器
lAxios.interceptors.response.use(function(res) {
  let status = res.data.status
  switch (status) {
    case 10:
      _$vm.$message.error('请登录')
      router.replace('/')
      return
    case 0:
      return res
    case 1:
      return res
  }
  // 对响应数据做点什么
}, function(error) {
  let err = error.response
  console.log(error.response)
  _$vm.$message.error('服务器错误')
  // 对响应错误做点什么
  return Promise.reject(error)
})

// 把 `lAxios` 加到 `Vue` 的原型中，是全局使用axios的方法之一，用的话，就this.lAxios
Vue.prototype.lAxios = lAxios

Vue.prototype.$formatParams = params => {
  let query = {}
  for (let k in params) {
    if (params[k] === undefined || params[k] === '') {
      continue
    }
    query[k] = params[k]
  }
  return query
}

Vue.config.productionTip = false
//Vue.prototype.$message1 = function (msg) { this.$message({message: msg,duration:1000}) }

window._$vm = new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

window._$vm.$message.success = function(text) {
  window._$vm.$message({
    message: text,
    duration: 1000,
    type: 'success',
    center: true
  })
}
window._$vm.$message.info = function(text) {
  window._$vm.$message({
    message: text,
    duration: 1000,
    type: 'info',
    center: true
  })
}
window._$vm.$message.warning = function(text) {
  window._$vm.$message({
    message: text,
    duration: 1000,
    type: 'warning',
    center: true
  })
}
window._$vm.$message.error = function(text) {
  window._$vm.$message({
    message: text,
    duration: 1500,
    type: 'error',
    center: true
  })
}


Date.prototype.format = function(fmt) {
  var o = {
    'M+': this.getMonth() + 1, //月份
    'd+': this.getDate(), //日
    'h+': this.getHours(), //小时
    'm+': this.getMinutes(), //分
    's+': this.getSeconds(), //秒
    'q+': Math.floor((this.getMonth() + 3) / 3), //季度
    'S': this.getMilliseconds() //毫秒
  }
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
  }
  for (var k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
    }
  }
  return fmt
}